class Solution {
public:
    vector<int> rearrangeBarcodes(vector<int>& barcodes) {
        unordered_map<int,int> hash;
        //统计个数，先填最多的，再填次多的，然后第三多的。。。。。。
        for(auto e:barcodes)
        {
            hash[e]++;
        }
        vector<pair<int,int>> v(hash.begin(),hash.end());
        sort(v.begin(),v.end(),[&v](const pair<int,int>& a,const pair<int,int>& b){
            return a.second>b.second;
        });
        int n=barcodes.size();
        vector<int> ret(n);
        int i=0;
        for(auto& e:v)
        {
            while(e.second--)//填一遍，再填一边就结束了
            {
                if(i>=n) i=1;

                ret[i]=e.first;
                i+=2;
            }


        }
        return ret;

    }
};